1. Field of the Invention
The present invention relates generally to computer systems and more specifically to the control of input/output (I/O) devices for processing I/O transactions by multiple processes in a computer system.
2. Description of Related Art
Current I/O technology for computer systems provides for a single I/O device driver program controlling an I/O device, with that I/O device driver executing as a component of operating system (OS) software solely within the OS environment on a computing platform. The OS directly controls I/O transactions between the I/O device and an associated I/O unit's physical memory. An I/O unit typically includes one or more I/O platforms, wherein each I/O platform includes a processor, memory, I/O adapters, and I/O devices, and is managed independently from other processors within the computer system solely for processing I/O transactions. To initiate a data transfer, the OS specifies a physical address within the I/O unit's physical address domain. The OS regulates all access to the I/O device driver as a single source for I/O requests for use of the driver. In more sophisticated systems having multiple OS instances, ownership of the I/O device is passed from OS to OS, but each OS retains its own I/O device driver for the I/O device.
An advance in I/O system architecture design is the Intelligent I/O (I20) architecture. The I20 architecture is a software specification designed to facilitate intelligent I/O subsystems which increase system scalability and availability, thereby allowing more users to be supported on a single server. These intelligent I/O subsystems allow I/O interrupts, such as those generated by networking and storage transactions, to be handled in the I/O subsystem, freeing the host processor to perform application processing tasks. With the advent of I20 subsystems as defined by the I20 architecture specification, there is a need for multiple independent control of I/O devices to support peer-to-peer and clustering concepts where a number of different platforms, each with their own instance of an operating system, require access to the same I/O device.